Skip to content

Validate and update links (STF-557)#408

Open
oschwald wants to merge 3 commits into
mainfrom
greg/stf-557
Open

Validate and update links (STF-557)#408
oschwald wants to merge 3 commits into
mainfrom
greg/stf-557

Conversation

@oschwald
Copy link
Copy Markdown
Member

@oschwald oschwald commented Jun 4, 2026

Summary

Validates all links in the repo with lychee and updates those that were out of date or redirected elsewhere. Also adds a lychee config and a Links CI workflow so link rot is caught automatically going forward (on push, PR, and weekly).

The link checker uses max_redirects = 0, so any link that has moved is surfaced and updated to the canonical destination it resolves to.

Links updated

  • dev.maxmind.com/geoip/docs/{web-services,databases}?lang=en → canonical trailing-slash form
  • geoip2.readthedocs.org/geoip2.readthedocs.io/en/latest/
  • www.maxmind.com/en/correctionwww.maxmind.com/en/geoip-data-correction-request
  • www.maxmind.com/en/supportsupport.maxmind.com/knowledge-base
  • www.maxmind.com/en/geoip2-anonymous-ip-databasewww.maxmind.com/en/geoip-anonymous-ip-database
  • www.maxmind.com/en/my_license_key (was a 404) → www.maxmind.com/en/accounts/current/license-key
  • www.maxmind.com/www.maxmind.com/en/home

Historical HISTORY.rst entries are intentionally left unchanged.

Part of STF-557.

🤖 Generated with Claude Code

Comment thread .github/workflows/links.yml Fixed
Copy link
Copy Markdown

@gemini-code-assist gemini-code-assist Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request updates outdated and redirected URLs across documentation, configuration, and source files, and introduces a Lychee link checker configuration (lychee.toml) along with ignoring its cache file in .gitignore. Feedback on the new Lychee configuration suggests increasing max_redirects from 0 to 5 to prevent flaky CI builds from external redirects, and removing server error status codes (500..=599) from the accepted list to ensure permanently broken links are not ignored.

Important

The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.

Comment thread lychee.toml

# Don't allow any redirects, so links that have moved are surfaced and updated
# to their canonical destination.
max_redirects = 0
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

Using max_redirects = 0 will cause any redirect (including standard HTTP to HTTPS upgrades or minor path adjustments on external sites) to fail the CI build. While this is useful for identifying links to update to their canonical forms, enforcing it strictly in a blocking CI workflow can lead to flaky builds when external websites change their redirect behavior. Consider allowing a small number of redirects (e.g., max_redirects = 5) to prevent unrelated PRs from being blocked by external changes.

Suggested change
max_redirects = 0
max_redirects = 5

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Intentionally keeping max_redirects = 0. Surfacing moved/redirecting links is the goal of this change (STF-557), and it matches the dev-site and blog-site lychee configs; redirects are resolved by updating the link to its canonical target.

— Claude (posted on Greg's behalf)

Comment thread lychee.toml
# 429: Too Many Requests
# 500-599: Server errors (temporary issues shouldn't fail CI)
# 999: LinkedIn's custom status code
accept = ["100..=103", "200..=299", "403", "429", "500..=599", "999"]
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

Including "500..=599" in the accept list means that any link returning a server-side error (such as 500 Internal Server Error, 502 Bad Gateway, or 503 Service Unavailable) will be treated as a success. While this prevents transient server issues from failing the build, it also silences permanently broken links that fail with server errors. It is generally safer to remove 500..=599 from the accepted list and rely on Lychee's built-in retry mechanism or CI-level retries to handle temporary server issues.

Suggested change
accept = ["100..=103", "200..=299", "403", "429", "500..=599", "999"]
accept = ["100..=103", "200..=299", "403", "429", "999"]

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Keeping 500..=599 in accept, matching the dev-site and blog-site configs — transient upstream 5xx shouldn't fail link-checking CI.

— Claude (posted on Greg's behalf)

@oschwald oschwald force-pushed the greg/stf-557 branch 3 times, most recently from e17fff2 to 6da90f0 Compare June 4, 2026 20:34
Comment thread .github/workflows/release.yml Fixed
@oschwald oschwald force-pushed the greg/stf-557 branch 2 times, most recently from 9946e54 to 70cf80e Compare June 4, 2026 21:26
oschwald and others added 3 commits June 4, 2026 22:01
Adds a lychee configuration and a Links GitHub Actions workflow so that
stale or redirecting links are caught automatically going forward. The
checker runs on push, pull request, and weekly to catch external link
rot. max_redirects is 0 so links that have moved are surfaced and can be
updated to their canonical destination.

Part of STF-557.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Validated all links with lychee and updated those that were out of date
or redirected elsewhere:

- dev.maxmind.com doc URLs now use canonical trailing-slash form
- geoip2.readthedocs.org -> geoip2.readthedocs.io/en/latest/
- www.maxmind.com/en/correction -> /en/geoip-data-correction-request
- www.maxmind.com/en/support -> support.maxmind.com/knowledge-base
- www.maxmind.com/en/geoip2-anonymous-ip-database -> /en/geoip-anonymous-ip-database
- www.maxmind.com/en/my_license_key (404) -> /en/accounts/current/license-key
- www.maxmind.com/ -> /en/home

Historical HISTORY.rst entries are intentionally left unchanged.

Part of STF-557.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- Add missing 'v' prefix to action pin version comments (ref-version-mismatch).
- Disable uv caching in the release workflow (cache-poisoning); dependency
  caching is unnecessary for one-off release builds.

Part of STF-557.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

2 participants